#ifndef __COMUN_CLASE_H
#define __COMUN_CLASE_H

/*****************************************************************************
*                     Organizacion de Datos - 75.06                          *
*                         Catedra Lic. Servetto                              *
*            Facultad de Ingenieria - Universidad de Buenos Aires            *
******************************************************************************/ 

#include "Archivo.h"
#include <iostream>
#include <list>

using namespace std;

namespace Comun
{

	/// Enumerado que representa al codigo de la ejecucion de una operacion
	enum CodigoConsultaResultado
	{
		//Valor Nulo
		NoEspecificado,
		/// La operacion fue realizada con exito.
		ExitoConsulta,
		/// No pudo encontrarse la clase a la cual hace referencia la operacion.
		ClaseNoEncontrada,
		/// La operacion no pudo ser realizada debido a una falla en la integridad referencial.
		FalloIntegridad,
		/// Error no especificado.
		ErrorConsulta
	};

	/// Clase que contiene el resultado de una operacion.
	class Resultado
	{
	public:

		Resultado();
		~Resultado();

		/// Mensaje que describe y/o amplia la informacion sobre la ejecucion.
		string* Mensaje;
		/// Codigo de la operacion
		CodigoConsultaResultado Codigo;
		/// Path al archivo con las instancias resultado (si existe) de la ejecucion.
		string* ArchivoResultado;
	};


	class Clase
	{
	public: 
		Clase();
		~Clase();
		string* NombreClase;
		list<Atributo>* Miembros;

		bool ContieneMiembro(string nombre);
		bool Fetched;

	};

}

#endif
